<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MRSL Motion Primitive Library: include/mpl_planner/planner/map_planner.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">MRSL Motion Primitive Library
   &#160;<span id="projectnumber">1.2</span>
   </div>
   <div id="projectbrief">A motion primitive library for generating trajectory for mobile robots</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_27679d0403171f1d79ee57f30a72bf4e.html">mpl_planner</a></li><li class="navelem"><a class="el" href="dir_59597771b58107a2ddbcd11f4d8a1dfd.html">planner</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">map_planner.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="map__planner_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#ifndef MPL_MAP_PLANNER_H</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#define MPL_MAP_PLANNER_H</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="planner__base_8h.html">mpl_planner/common/planner_base.h</a>&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="env__map_8h.html">mpl_planner/env/env_map.h</a>&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceMPL.html">MPL</a> {</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Dim&gt;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="keyword">using</span> linkedHashMap =</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;    std::unordered_map&lt;int, std::vector&lt;std::pair&lt;Waypoint&lt;Dim&gt;, <span class="keywordtype">int</span>&gt;&gt;&gt;;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> Dim&gt;</div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html">   21</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMPL_1_1MapPlanner.html">MapPlanner</a> : <span class="keyword">public</span> <a class="code" href="classMPL_1_1PlannerBase.html">PlannerBase</a>&lt;Dim, Waypoint&lt;Dim&gt;&gt; {</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;  <a class="code" href="classMPL_1_1MapPlanner.html#a810e5b0abb5c832953e742618c3a7c33">MapPlanner</a>(<span class="keywordtype">bool</span> verbose);</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#ab92847a1e1e894cdb82f7462beea2dd3">setMapUtil</a>(<span class="keyword">const</span> std::shared_ptr&lt;<a class="code" href="classMPL_1_1MapUtil.html">MapUtil&lt;Dim&gt;</a>&gt;&amp; map_util);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#aa2c40601cea17f7d312f83aff1ed67b6">setSearchRegion</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#a0a3b37beb40c06edc02cb4b7339f2b96">vec_Vecf&lt;Dim&gt;</a>&amp; path, <span class="keywordtype">bool</span> dense = <span class="keyword">false</span>);</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#a58d82aa5dc0b47aa766e9e28d25a5df2">setSearchRadius</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a>&amp; radius);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#a997ae7ef2b3df2a940fc580423b2b577">setPotentialRadius</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a>&amp; radius);</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#a797e602e4ecfdf389ba28d13ab5748ba">setPotentialMapRange</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a>&amp; range);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#a27104d0bd08ab5afd4fa8c2f280cb596">setGradientWeight</a>(<a class="code" href="data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266">decimal_t</a> w);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#a896aaaf0115e3edcb3aedf0cb40eb472">setPotentialWeight</a>(<a class="code" href="data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266">decimal_t</a> w);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <a class="code" href="data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b">vec_Vec3f</a> <a class="code" href="classMPL_1_1MapPlanner.html#ab3ae9126a2d7a32ceb92967ec9fac806">getPotentialCloud</a>(<a class="code" href="data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266">decimal_t</a> h_max = 1.0);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <a class="code" href="data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b">vec_Vec3f</a> <a class="code" href="classMPL_1_1MapPlanner.html#a47cb33250feffe285cf239056251ab8a">getGradientCloud</a>(<a class="code" href="data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266">decimal_t</a> h_max = 1.0, <span class="keywordtype">int</span> i = 0);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  <a class="code" href="data__type_8h.html#a0a3b37beb40c06edc02cb4b7339f2b96">vec_Vecf&lt;Dim&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html#ab1e4c81e8273e646abba57d8adf594c5">getSearchRegion</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <a class="code" href="data__type_8h.html#a0a3b37beb40c06edc02cb4b7339f2b96">vec_Vecf&lt;Dim&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html#a2d79de5cb3edefc291f1399ea0f101dd">getLinkedNodes</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#aa0b71418ed9aab840c9273d56f5ee2c5">updateBlockedNodes</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#afb24b810e24942cb8cafdd097b8272fb">vec_Veci&lt;Dim&gt;</a>&amp; pns);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#acc5f891374e37b7f4edc382a5319cf81">updateClearedNodes</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#afb24b810e24942cb8cafdd097b8272fb">vec_Veci&lt;Dim&gt;</a>&amp; pns);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#aba1dd74a30518535db1d49c1944b6670">updatePotentialMap</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a>&amp; pos);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classMPL_1_1MapPlanner.html#a8f4cb540fe4221366bcfb1ec14d77f7f">iterativePlan</a>(<span class="keyword">const</span> <a class="code" href="structWaypoint.html">Waypoint&lt;Dim&gt;</a>&amp; start, <span class="keyword">const</span> <a class="code" href="structWaypoint.html">Waypoint&lt;Dim&gt;</a>&amp; goal,</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                     <span class="keyword">const</span> <a class="code" href="classTrajectory.html">Trajectory&lt;Dim&gt;</a>&amp; raw_traj, <span class="keywordtype">int</span> max_iter_num = 3);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classMPL_1_1MapPlanner.html#a0d763e074c13166cb433a4043c101d8d">createMask</a>();</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <a class="code" href="data__type_8h.html#a6b9210d48a0a541940af71827aad1b41">vec_E&lt;Vecf&lt;Dim&gt;</a>&gt; <a class="code" href="classMPL_1_1MapPlanner.html#afc7bd76cd9198e20886aba7d3d67401c">calculateGradient</a>(<span class="keyword">const</span> <a class="code" href="data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede">Veci&lt;Dim&gt;</a>&amp; coord1,</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                                     <span class="keyword">const</span> <a class="code" href="data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede">Veci&lt;Dim&gt;</a>&amp; coord2);</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#a86188fa89468079b0bff5907ed3a2447">   97</a></span>&#160;  std::shared_ptr&lt;MapUtil&lt;Dim&gt;&gt; <a class="code" href="classMPL_1_1MapPlanner.html#a86188fa89468079b0bff5907ed3a2447">map_util_</a>;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#abd5ca72cd6fe9dca7f57bbeeef489168">  101</a></span>&#160;  <span class="keyword">mutable</span> linkedHashMap&lt;Dim&gt; <a class="code" href="classMPL_1_1MapPlanner.html#abd5ca72cd6fe9dca7f57bbeeef489168">lhm_</a>;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#a3df9c4896d164c368c5473322914d480">  104</a></span>&#160;  int8_t <a class="code" href="classMPL_1_1MapPlanner.html#a3df9c4896d164c368c5473322914d480">H_MAX</a>{100};</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#a4a53a77c9f6e7e8a310dc88f88930102">  107</a></span>&#160;  <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html#a4a53a77c9f6e7e8a310dc88f88930102">potential_radius_</a>{<a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;::Zero</a>()};</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#a2677ec6a3e0863a00bc5d413d8927220">  109</a></span>&#160;  <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html#a2677ec6a3e0863a00bc5d413d8927220">potential_map_range_</a>{<a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;::Zero</a>()};</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#a57edfafe70fb80930b97e5c27601966e">  111</a></span>&#160;  <a class="code" href="data__type_8h.html#a6b9210d48a0a541940af71827aad1b41">vec_E&lt;std::pair&lt;Veci&lt;Dim&gt;</a>, int8_t&gt;&gt; <a class="code" href="classMPL_1_1MapPlanner.html#a57edfafe70fb80930b97e5c27601966e">potential_mask_</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#ad8d57f43e3c67b23534b22e35f089978">  113</a></span>&#160;  <a class="code" href="data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266">decimal_t</a> <a class="code" href="classMPL_1_1MapPlanner.html#ad8d57f43e3c67b23534b22e35f089978">pow_</a>{1.0};</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#a42b34c4864622ddf25f274baf27c7891">  115</a></span>&#160;  <a class="code" href="data__type_8h.html#a6b9210d48a0a541940af71827aad1b41">vec_E&lt;Vecf&lt;Dim&gt;</a>&gt; <a class="code" href="classMPL_1_1MapPlanner.html#a42b34c4864622ddf25f274baf27c7891">gradient_map_</a>;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classMPL_1_1MapPlanner.html#ac0d4d0e4ed0ee9ce7b4cbb86baaa9701">  118</a></span>&#160;  <a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html#ac0d4d0e4ed0ee9ce7b4cbb86baaa9701">search_radius_</a>{<a class="code" href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf&lt;Dim&gt;::Zero</a>()};</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;};</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="map__planner_8h.html#a3df478df06221cdbab15f9a96156b10f">  122</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classMPL_1_1MapPlanner.html">MapPlanner&lt;2&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html">OccMapPlanner</a>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="map__planner_8h.html#ac02de4f028b372f4f0396ae3d67eac55">  125</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classMPL_1_1MapPlanner.html">MapPlanner&lt;3&gt;</a> <a class="code" href="classMPL_1_1MapPlanner.html">VoxelMapPlanner</a>;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}  <span class="comment">// namespace MPL</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classMPL_1_1MapPlanner_html_a27104d0bd08ab5afd4fa8c2f280cb596"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a27104d0bd08ab5afd4fa8c2f280cb596">MPL::MapPlanner::setGradientWeight</a></div><div class="ttdeci">void setGradientWeight(decimal_t w)</div><div class="ttdoc">Set gradient weight. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:36</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a86188fa89468079b0bff5907ed3a2447"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a86188fa89468079b0bff5907ed3a2447">MPL::MapPlanner::map_util_</a></div><div class="ttdeci">std::shared_ptr&lt; MapUtil&lt; Dim &gt; &gt; map_util_</div><div class="ttdoc">Map util. </div><div class="ttdef"><b>Definition:</b> map_planner.h:97</div></div>
<div class="ttc" id="namespaceMPL_html"><div class="ttname"><a href="namespaceMPL.html">MPL</a></div><div class="ttdef"><b>Definition:</b> map_util.h:12</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_ab92847a1e1e894cdb82f7462beea2dd3"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#ab92847a1e1e894cdb82f7462beea2dd3">MPL::MapPlanner::setMapUtil</a></div><div class="ttdeci">virtual void setMapUtil(const std::shared_ptr&lt; MapUtil&lt; Dim &gt;&gt; &amp;map_util)</div><div class="ttdoc">Set map util. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:14</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a797e602e4ecfdf389ba28d13ab5748ba"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a797e602e4ecfdf389ba28d13ab5748ba">MPL::MapPlanner::setPotentialMapRange</a></div><div class="ttdeci">void setPotentialMapRange(const Vecf&lt; Dim &gt; &amp;range)</div><div class="ttdoc">Set potential map size. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:26</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_ab1e4c81e8273e646abba57d8adf594c5"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#ab1e4c81e8273e646abba57d8adf594c5">MPL::MapPlanner::getSearchRegion</a></div><div class="ttdeci">vec_Vecf&lt; Dim &gt; getSearchRegion() const</div><div class="ttdoc">Get search region. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:98</div></div>
<div class="ttc" id="structWaypoint_html"><div class="ttname"><a href="structWaypoint.html">Waypoint</a></div><div class="ttdoc">Waypoint base class. </div><div class="ttdef"><b>Definition:</b> waypoint.h:23</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_ad8d57f43e3c67b23534b22e35f089978"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#ad8d57f43e3c67b23534b22e35f089978">MPL::MapPlanner::pow_</a></div><div class="ttdeci">decimal_t pow_</div><div class="ttdoc">Power of potential value. </div><div class="ttdef"><b>Definition:</b> map_planner.h:113</div></div>
<div class="ttc" id="env__map_8h_html"><div class="ttname"><a href="env__map_8h.html">env_map.h</a></div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_afc7bd76cd9198e20886aba7d3d67401c"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#afc7bd76cd9198e20886aba7d3d67401c">MPL::MapPlanner::calculateGradient</a></div><div class="ttdeci">vec_E&lt; Vecf&lt; Dim &gt; &gt; calculateGradient(const Veci&lt; Dim &gt; &amp;coord1, const Veci&lt; Dim &gt; &amp;coord2)</div><div class="ttdoc">Calculate local gradient map. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:247</div></div>
<div class="ttc" id="classTrajectory_html"><div class="ttname"><a href="classTrajectory.html">Trajectory</a></div><div class="ttdoc">Trajectory class. </div><div class="ttdef"><b>Definition:</b> trajectory.h:43</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_abd5ca72cd6fe9dca7f57bbeeef489168"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#abd5ca72cd6fe9dca7f57bbeeef489168">MPL::MapPlanner::lhm_</a></div><div class="ttdeci">linkedHashMap&lt; Dim &gt; lhm_</div><div class="ttdef"><b>Definition:</b> map_planner.h:101</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_aa2c40601cea17f7d312f83aff1ed67b6"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#aa2c40601cea17f7d312f83aff1ed67b6">MPL::MapPlanner::setSearchRegion</a></div><div class="ttdeci">void setSearchRegion(const vec_Vecf&lt; Dim &gt; &amp;path, bool dense=false)</div><div class="ttdoc">Set search region. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:46</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a47cb33250feffe285cf239056251ab8a"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a47cb33250feffe285cf239056251ab8a">MPL::MapPlanner::getGradientCloud</a></div><div class="ttdeci">vec_Vec3f getGradientCloud(decimal_t h_max=1.0, int i=0)</div><div class="ttdoc">Get the gradient cloud, works for 2D. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:225</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a3df9c4896d164c368c5473322914d480"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a3df9c4896d164c368c5473322914d480">MPL::MapPlanner::H_MAX</a></div><div class="ttdeci">int8_t H_MAX</div><div class="ttdoc">Max value for potential. </div><div class="ttdef"><b>Definition:</b> map_planner.h:104</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_ac0d4d0e4ed0ee9ce7b4cbb86baaa9701"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#ac0d4d0e4ed0ee9ce7b4cbb86baaa9701">MPL::MapPlanner::search_radius_</a></div><div class="ttdeci">Vecf&lt; Dim &gt; search_radius_</div><div class="ttdoc">Search radius (tunnel size) </div><div class="ttdef"><b>Definition:</b> map_planner.h:118</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a896aaaf0115e3edcb3aedf0cb40eb472"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a896aaaf0115e3edcb3aedf0cb40eb472">MPL::MapPlanner::setPotentialWeight</a></div><div class="ttdeci">void setPotentialWeight(decimal_t w)</div><div class="ttdoc">Set potential weight. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:31</div></div>
<div class="ttc" id="data__type_8h_html_a6b9210d48a0a541940af71827aad1b41"><div class="ttname"><a href="data__type_8h.html#a6b9210d48a0a541940af71827aad1b41">vec_E</a></div><div class="ttdeci">std::vector&lt; T, Eigen::aligned_allocator&lt; T &gt; &gt; vec_E</div><div class="ttdoc">Pre-allocated std::vector for Eigen using vec_E. </div><div class="ttdef"><b>Definition:</b> data_type.h:53</div></div>
<div class="ttc" id="data__type_8h_html_a0a3b37beb40c06edc02cb4b7339f2b96"><div class="ttname"><a href="data__type_8h.html#a0a3b37beb40c06edc02cb4b7339f2b96">vec_Vecf</a></div><div class="ttdeci">vec_E&lt; Vecf&lt; N &gt; &gt; vec_Vecf</div><div class="ttdoc">Vector of Eigen 1D float vector. </div><div class="ttdef"><b>Definition:</b> data_type.h:70</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a57edfafe70fb80930b97e5c27601966e"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a57edfafe70fb80930b97e5c27601966e">MPL::MapPlanner::potential_mask_</a></div><div class="ttdeci">vec_E&lt; std::pair&lt; Veci&lt; Dim &gt;, int8_t &gt; &gt; potential_mask_</div><div class="ttdoc">Mask for generating potential field around obstacle. </div><div class="ttdef"><b>Definition:</b> map_planner.h:111</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a2677ec6a3e0863a00bc5d413d8927220"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a2677ec6a3e0863a00bc5d413d8927220">MPL::MapPlanner::potential_map_range_</a></div><div class="ttdeci">Vecf&lt; Dim &gt; potential_map_range_</div><div class="ttdoc">Potential map size, centered at the given pos. </div><div class="ttdef"><b>Definition:</b> map_planner.h:109</div></div>
<div class="ttc" id="data__type_8h_html_ac208833a6aa7ec29f39eb5ae142aaede"><div class="ttname"><a href="data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede">Veci</a></div><div class="ttdeci">Eigen::Matrix&lt; int, N, 1 &gt; Veci</div><div class="ttdoc">Eigen 1D int vector of size N. </div><div class="ttdef"><b>Definition:</b> data_type.h:59</div></div>
<div class="ttc" id="data__type_8h_html_a7c99d9360fc6cac2762b786e2fb52266"><div class="ttname"><a href="data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266">decimal_t</a></div><div class="ttdeci">double decimal_t</div><div class="ttdoc">Rename the float type used in lib. </div><div class="ttdef"><b>Definition:</b> data_type.h:49</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a4a53a77c9f6e7e8a310dc88f88930102"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a4a53a77c9f6e7e8a310dc88f88930102">MPL::MapPlanner::potential_radius_</a></div><div class="ttdeci">Vecf&lt; Dim &gt; potential_radius_</div><div class="ttdoc">Radius of potential for each voxel. </div><div class="ttdef"><b>Definition:</b> map_planner.h:107</div></div>
<div class="ttc" id="data__type_8h_html_afb24b810e24942cb8cafdd097b8272fb"><div class="ttname"><a href="data__type_8h.html#afb24b810e24942cb8cafdd097b8272fb">vec_Veci</a></div><div class="ttdeci">vec_E&lt; Veci&lt; N &gt; &gt; vec_Veci</div><div class="ttdoc">Vector of Eigen 1D int vector. </div><div class="ttdef"><b>Definition:</b> data_type.h:73</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a8f4cb540fe4221366bcfb1ec14d77f7f"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a8f4cb540fe4221366bcfb1ec14d77f7f">MPL::MapPlanner::iterativePlan</a></div><div class="ttdeci">bool iterativePlan(const Waypoint&lt; Dim &gt; &amp;start, const Waypoint&lt; Dim &gt; &amp;goal, const Trajectory&lt; Dim &gt; &amp;raw_traj, int max_iter_num=3)</div><div class="ttdoc">Iterative trajectory planning with APFs. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:394</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a2d79de5cb3edefc291f1399ea0f101dd"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a2d79de5cb3edefc291f1399ea0f101dd">MPL::MapPlanner::getLinkedNodes</a></div><div class="ttdeci">vec_Vecf&lt; Dim &gt; getLinkedNodes() const</div><div class="ttdoc">Get linked voxels. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:125</div></div>
<div class="ttc" id="data__type_8h_html_a3a0c45655a5e009e56634ccde0c5c575"><div class="ttname"><a href="data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575">Vecf</a></div><div class="ttdeci">Eigen::Matrix&lt; decimal_t, N, 1 &gt; Vecf</div><div class="ttdoc">Eigen 1D float vector of size N. </div><div class="ttdef"><b>Definition:</b> data_type.h:56</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_ab3ae9126a2d7a32ceb92967ec9fac806"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#ab3ae9126a2d7a32ceb92967ec9fac806">MPL::MapPlanner::getPotentialCloud</a></div><div class="ttdeci">vec_Vec3f getPotentialCloud(decimal_t h_max=1.0)</div><div class="ttdoc">Get the potential cloud, works for 2D and 3D. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:188</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a58d82aa5dc0b47aa766e9e28d25a5df2"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a58d82aa5dc0b47aa766e9e28d25a5df2">MPL::MapPlanner::setSearchRadius</a></div><div class="ttdeci">void setSearchRadius(const Vecf&lt; Dim &gt; &amp;radius)</div><div class="ttdoc">Set search radius (tunnel radius) </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:41</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_acc5f891374e37b7f4edc382a5319cf81"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#acc5f891374e37b7f4edc382a5319cf81">MPL::MapPlanner::updateClearedNodes</a></div><div class="ttdeci">void updateClearedNodes(const vec_Veci&lt; Dim &gt; &amp;pns)</div><div class="ttdoc">Update edge costs according to the new cleared nodes. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:174</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a0d763e074c13166cb433a4043c101d8d"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a0d763e074c13166cb433a4043c101d8d">MPL::MapPlanner::createMask</a></div><div class="ttdeci">void createMask()</div><div class="ttdoc">Create mask for potential. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:286</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a42b34c4864622ddf25f274baf27c7891"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a42b34c4864622ddf25f274baf27c7891">MPL::MapPlanner::gradient_map_</a></div><div class="ttdeci">vec_E&lt; Vecf&lt; Dim &gt; &gt; gradient_map_</div><div class="ttdoc">Gradient map. </div><div class="ttdef"><b>Definition:</b> map_planner.h:115</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a997ae7ef2b3df2a940fc580423b2b577"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a997ae7ef2b3df2a940fc580423b2b577">MPL::MapPlanner::setPotentialRadius</a></div><div class="ttdeci">void setPotentialRadius(const Vecf&lt; Dim &gt; &amp;radius)</div><div class="ttdoc">Set potential radius. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:21</div></div>
<div class="ttc" id="data__type_8h_html_a62c46ed3e3ab6773b30439f9be38290b"><div class="ttname"><a href="data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b">vec_Vec3f</a></div><div class="ttdeci">vec_E&lt; Vec3f &gt; vec_Vec3f</div><div class="ttdoc">Vector of type Vec3f. </div><div class="ttdef"><b>Definition:</b> data_type.h:93</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_aba1dd74a30518535db1d49c1944b6670"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#aba1dd74a30518535db1d49c1944b6670">MPL::MapPlanner::updatePotentialMap</a></div><div class="ttdeci">void updatePotentialMap(const Vecf&lt; Dim &gt; &amp;pos)</div><div class="ttdoc">Generate potential map. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:323</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_aa0b71418ed9aab840c9273d56f5ee2c5"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#aa0b71418ed9aab840c9273d56f5ee2c5">MPL::MapPlanner::updateBlockedNodes</a></div><div class="ttdeci">void updateBlockedNodes(const vec_Veci&lt; Dim &gt; &amp;pns)</div><div class="ttdoc">Update edge costs according to the new blocked nodes. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:160</div></div>
<div class="ttc" id="planner__base_8h_html"><div class="ttname"><a href="planner__base_8h.html">planner_base.h</a></div><div class="ttdoc">base class for motion planning </div></div>
<div class="ttc" id="classMPL_1_1MapUtil_html"><div class="ttname"><a href="classMPL_1_1MapUtil.html">MPL::MapUtil</a></div><div class="ttdef"><b>Definition:</b> map_util.h:20</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html_a810e5b0abb5c832953e742618c3a7c33"><div class="ttname"><a href="classMPL_1_1MapPlanner.html#a810e5b0abb5c832953e742618c3a7c33">MPL::MapPlanner::MapPlanner</a></div><div class="ttdeci">MapPlanner(bool verbose)</div><div class="ttdoc">Simple constructor. </div><div class="ttdef"><b>Definition:</b> map_planner.cpp:6</div></div>
<div class="ttc" id="classMPL_1_1PlannerBase_html"><div class="ttname"><a href="classMPL_1_1PlannerBase.html">MPL::PlannerBase</a></div><div class="ttdoc">Motion planning base util class. </div><div class="ttdef"><b>Definition:</b> planner_base.h:19</div></div>
<div class="ttc" id="classMPL_1_1MapPlanner_html"><div class="ttname"><a href="classMPL_1_1MapPlanner.html">MPL::MapPlanner</a></div><div class="ttdoc">Motion primitive planner in voxel map. </div><div class="ttdef"><b>Definition:</b> map_planner.h:21</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
